Groovy এর সিনট্যাক্স Java এর সাথে অনেকটাই সাদৃশ্যপূর্ণ, তবে এটি অনেক সংক্ষিপ্ত এবং সহজ। Groovy এর কোড স্ট্রাকচার এবং সিনট্যাক্সের কিছু বিশেষ বৈশিষ্ট্য রয়েছে যা কোড লেখাকে আরও সুবিধাজনক করে তোলে। নিচে Groovy এর কোড স্ট্রাকচার এবং সিনট্যাক্সের বিভিন্ন দিক বিস্তারিতভাবে আলোচনা করা হলো।
Groovy তে ভেরিয়েবল ডিক্লারেশন করতে def
কীওয়ার্ড ব্যবহার করা হয়, এবং ডাইনামিক টাইপিং থাকায় ভেরিয়েবলের টাইপ উল্লেখ করার প্রয়োজন হয় না।
def name = "Groovy"
def age = 25
println "$name is $age years old" // Output: Groovy is 25 years old
Java এর তুলনায় পার্থক্য: Java তে টাইপ উল্লেখ করতে হয়, যেমন String name = "Groovy";
, তবে Groovy তে def
ব্যবহার করা যায় এবং টাইপ উল্লেখ না করলেও চলে।
Groovy তে ক্লাস ডিক্লারেশন Java এর মতোই, তবে কোড অনেকটাই সংক্ষিপ্ত এবং সহজ। ক্লাসের বৈশিষ্ট্যগুলো ডাইনামিকভাবে ব্যবহার করা যায়।
class Person {
String name
int age
def sayHello() {
println "Hello, my name is $name and I am $age years old."
}
}
def person = new Person(name: "John", age: 30)
person.sayHello() // Output: Hello, my name is John and I am 30 years old.
Java এর তুলনায় পার্থক্য: Groovy তে get
এবং set
মেথডগুলি অটোমেটিক্যালি তৈরি হয়। name: "John", age: 30
এর মাধ্যমে সরাসরি প্রপার্টিগুলির মান সেট করা যায়।
Groovy তে মেথড ডিক্লারেশন খুবই সহজ এবং সংক্ষিপ্ত। def
ব্যবহার করে মেথড তৈরি করা যায় এবং return
কীওয়ার্ড সরাসরি ব্যবহার না করলেও চলে।
def greet(name) {
"Hello, $name!"
}
println greet("World") // Output: Hello, World!
Java এর তুলনায় পার্থক্য: Groovy তে return
কীওয়ার্ড উল্লেখ না করলেও মেথডের লাস্ট এক্সপ্রেশনটি রিটার্ন হয়। মেথডের ডেটা টাইপ উল্লেখ করতে হয় না।
Groovy তে কন্ডিশনাল স্টেটমেন্টগুলি Java এর মতোই, তবে আরও সংক্ষিপ্ত সিনট্যাক্সে লেখা যায়।
def age = 18
if (age >= 18) {
println "You are an adult."
} else {
println "You are a minor."
}
// Ternary Operator
def message = (age >= 18) ? "Adult" : "Minor"
println message // Output: Adult
Java এর তুলনায় পার্থক্য: Groovy তে কিছু ক্ষেত্রে ব্রেস {}
বাদ দেওয়া যায় এবং Groovy তে Ternary অপারেটর ব্যবহার করা সহজ।
Groovy তে লুপ স্টেটমেন্টগুলি Java এর মতো, তবে আরও সংক্ষিপ্ত।
def numbers = [1, 2, 3, 4, 5]
for (num in numbers) {
println num
}
// আরও সহজভাবে
numbers.each { println it }
Java এর তুলনায় পার্থক্য: Groovy তে .each
মেথড ব্যবহার করে সহজেই লুপ চালানো যায় এবং it
ব্যবহার করে এলিমেন্ট অ্যাক্সেস করা যায়।
Groovy তে ক্লোজার একটি গুরুত্বপূর্ণ ফিচার, যা একটি ব্লক বা মেথডের মতো ব্যবহার করা যায় এবং এটি উচ্চ স্তরের ফাংশন হিসেবে ব্যবহৃত হয়।
def greet = { name -> "Hello, $name!" }
println greet("Groovy") // Output: Hello, Groovy!
// ক্লোজার ব্যবহার করে ফিল্টার করা
def numbers = [1, 2, 3, 4, 5]
def evenNumbers = numbers.findAll { it % 2 == 0 }
println evenNumbers // Output: [2, 4]
Java এর তুলনায় পার্থক্য: Groovy তে ক্লোজার ফাংশনাল প্রোগ্রামিং স্টাইলের জন্য ব্যবহার করা হয়, যা Java তে সরাসরি নেই।
Groovy তে স্ট্রিং ইন্টারপোলেশন খুবই সহজ, যেখানে $
চিহ্ন দিয়ে ভেরিয়েবল বা এক্সপ্রেশন সরাসরি স্ট্রিংয়ে যোগ করা যায়।
def name = "Groovy"
println "Hello, $name!" // Output: Hello, Groovy!
def age = 25
println "I am ${age + 5} years old." // Output: I am 30 years old.
Java এর তুলনায় পার্থক্য: Java তে স্ট্রিং ইন্টারপোলেশন সরাসরি নেই; String.format
বা কনক্যাটেনেশন (+
অপারেটর) ব্যবহার করতে হয়।
Groovy তে ম্যাপ এবং লিস্ট ব্যবহার খুবই সহজ এবং এর সিনট্যাক্স Python বা JavaScript এর মতো।
// লিস্ট
def numbers = [1, 2, 3, 4, 5]
println numbers[0] // Output: 1
// ম্যাপ
def person = [name: "John", age: 30]
println person['name'] // Output: John
println person.age // Output: 30
Java এর তুলনায় পার্থক্য: Java তে অ্যারে বা হ্যাশম্যাপ ব্যবহারের জন্য স্ট্যান্ডার্ড লাইব্রেরি ক্লাস ব্যবহার করতে হয়, তবে Groovy তে এটি সহজে এবং সংক্ষেপে করা যায়।
Groovy তে মেথড চেইনিং এবং এক্সপ্রেশন খুব সহজ এবং সংক্ষিপ্ত। এতে .collect
, .findAll
, .each
এর মতো মেথড ব্যবহার করা যায়।
def numbers = [1, 2, 3, 4, 5]
def doubled = numbers.collect { it * 2 }
println doubled // Output: [2, 4, 6, 8, 10]
Java এর তুলনায় পার্থক্য: Java তে এই ধরনের কাজ Streams API এর মাধ্যমে করা যায়, তবে Groovy তে এটি আরও সহজ।
Groovy এর কোড স্ট্রাকচার এবং সিনট্যাক্স সংক্ষিপ্ত, সহজ এবং Java এর তুলনায় অনেক সুবিধাজনক। Groovy তে ডাইনামিক টাইপিং, ক্লোজার, স্ট্রিং ইন্টারপোলেশন, এবং সহজ ম্যাপ ও লিস্ট অপারেশন এর মতো ফিচার রয়েছে, যা প্রোগ্রামিংকে আরও দ্রুত এবং কার্যকরী করে তোলে।
common.read_more